package git.soulbgm.service;

import git.soulbgm.mapper.RoleMenuMapper;
import git.soulbgm.pojo.*;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * 登录相关业务逻辑
 *
 * @author SoulBGM
 * @version 1.0
 * @date 2019/10/31 16:07
 */
public interface LoginService {

    /**
     * 按用户名查找用户
     *
     * @param username 用户名
     * @return 用户对象
     */
    UserDto findByUsername(String username);

    /**
     * 按用户ID查找角色列表
     *
     * @param userId 用户id
     * @return 角色列表
     */
    List<RoleDto> findRoleByUserId(Serializable userId);

    /**
     * 按角色列表查找权限列表
     *
     * @param roleList 角色id数组
     * @return 权限列表
     */
    List<PermissionsDto> findPermissionsByRole(List<RoleDto> roleList);

    /**
     * 通过PrincipalUser对象设置角色和权限
     *
     * @param user PrincipalUser对象
     * @throws NoSuchFieldException 没有这样的字段异常
     */
    void setRoleAndPermissions(PrincipalUser user) throws NoSuchFieldException;
}
